const express = require('express')
const path = require('path')
const arttemplate = require('express-art-template')
const bodyParser = require('body-parser')
const session = require('express-session')
const cookieParse = require('cookie-parser')

// 连接数据库
const sequelize = require('./model/sequelize')

// 同步对象关系映射
sequelize.sync()

// 后台页面需要的路由
const adminRouter = require('./routers/admin')

// 前台页面需要的API路由
const userRouter = require('./routers/user')

const app = express()

// 设置后台页面共享文件夹
app.use('/public', express.static(path.join(__dirname, './public')))

// 注册解析post请求体的中间件
//app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))

// 设置允许部分接口跨域访问
app.all('/admin', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  next();
})

// 添加session中间件
app.use(session({
  // 配置加密字符串，它会在原有加密基础之上和这个字符串拼起来去加密
  // 目的是为了增加安全性，防止客户端恶意伪造
  secret: 'vuecms',
  resave: false,
  saveUninitialized: false // 无论你是否使用 Session ，我都默认直接给你分配一把钥匙
}))
// 添加cookie中间件
app.use(cookieParse())

// 添加文件上传的中间件


// 设置后台页面模板引擎为art-template
app.engine('html', arttemplate)
// 必须有这个不然会报错
app.set('view engine', 'html')
// 设置后台页面模板文件夹为views
app.set('views', path.join(__dirname, './views'))

app.use('/admin', adminRouter)

app.use('/user', userRouter)

// 404处理
app.use((req, res) => {
  res.render('error')
})

app.listen(3000, '127.0.0.1', () => {
  console.log('http://127.0.0.1:3000 is running!')
})

